home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / comm / www / SearchAdr.lha / searchadr / SearchAdr.rexx < prev    next >
OS/2 REXX Batch file  |  1997-04-13  |  5KB  |  219 lines

  1. /* SearchAdr.rexx
  2.  * Arexx program to search for URL`s & eMail Adresses in a
  3.  * Textfile,Guide,HTML,... & Copy it to Clipboard
  4.  *
  5.  * requirements:
  6.  * - rexxreqtools.library
  7.  * - rexxtricks.library
  8.  *
  9.  * usage:
  10.  * rx SearchAdr [Filename]
  11.  * (Select your favor language in Tooltypes of Icon)
  12.  *
  13.  * © By Bostjan Dolanec <basti@stuttgart.netsurf.de>
  14.  * $VER: SearchAdr.rexx 1.3 (11.4.1997)
  15.  */
  16.  
  17. Options Results
  18.  
  19. arg filename
  20. if left(filename,1)='"' then do
  21.     l=length(filename)
  22.     filename=substr(filename,2,l-2)
  23. end
  24. lf=D2C(10)
  25.  
  26. if ~show("L","rexxreqtools.library") then do
  27.     if ~addlib('rexxreqtools.library',5,-30) then do
  28.         lib="rexxreqtools.library"
  29.         call nolib lib
  30.     end
  31. end
  32. if ~show("L","rexxtricks.library") then do
  33.     if ~addlib("rexxtricks.library",5,-30) then do
  34.         lib="rexxtricks.library"
  35.         call nolib lib
  36.     end
  37. end
  38.  
  39. pfad=""
  40. if gettooltypes("SearchAdr.rexx",destvar) then do
  41.     do i=1 to destvar.0
  42.         sprache=upper(destvar.i)
  43.         if sprache="DEUTSCH" then do
  44.             frtexthead            = "Textdatei wählen"
  45.             frbutton            = "_Suchen"
  46.             ioerrtext            = "Datei konnte nicht geöffnet werden:"
  47.             listtitleI            = "Ich fand "
  48.             listtitleII            = " Adresse(n) in "
  49.             fenster.gadgettext    = "_Clipboard|_Neues File|_Ende"
  50.             noadrreqI            = "Ich konnte in:"lf||'"'
  51.             noadrreqII            = '"'||lf"weder URL`s noch eMail Adressen finden.."
  52.             noadrhead            = "Keine Adressen gefunden"
  53.             noadrbutton            = "_Neues File|_Ende"
  54.         end
  55.         if sprache="ENGLISH" then do
  56.             frtexthead            = "Select Textfile"
  57.             frbutton            = "_Search"
  58.             ioerrtext            = "I can`t open:"
  59.             listtitleI            = "I found "
  60.             listtitleII            = " address(es) in "
  61.             fenster.gadgettext    = "_Clipboard|_New File|_End"
  62.             noadrreqI            = "I can`t find in:"lf||'"'
  63.             noadrreqII            = '"'||lf"any URL`s or eMail addresses."
  64.             noadrhead            = "No addresses found"
  65.             noadrbutton            = "_New File|_End"
  66.         end
  67.     end
  68. end
  69.  
  70. /*------------------------------------------------------------*/
  71.  
  72. neuesfile:
  73. z=0
  74. wort="."
  75.  
  76. if pfad="" then pfad="RAM:"
  77. if filename="" then filename=rtfilerequest(pfad,,frtexthead,frbutton,"rt_reqpos=reqpos_centerwin",check)
  78. if filename="" then exit
  79. pfad=pathpart(filename)
  80. datei=filepart(filename)
  81. len=length(pfad)
  82. if len>10 then len=10
  83. header='"'||left(pfad,len)||"..."||datei||'"'
  84. if ~open(source,filename,R) then do
  85.     dummy = rtezrequest(ioerrtext||lf||filename,'_OK','IO Error','rt_reqpos=reqpos_centerwin')
  86.     exit
  87. end
  88. do while eof(source)=0
  89.     zeile=readln(source)
  90.     if length(zeile)>5 then do
  91.         idx=index(upper(zeile),"HTTP:")
  92.         if idx>0 then call grab
  93.         else do
  94.             idx=index(upper(zeile),"WWW.")
  95.             if idx>0 then call grab
  96.         end
  97.     if index(zeile,"@")>0 then call email
  98.     end
  99. end
  100. close(source)
  101.  
  102. if z>0 then do
  103.  
  104.     fenster.title        = listtitleI||z||listtitleII||header
  105.     fenster.font        = "SCREEN"
  106.     fenster.multiselect    = "TRUE"
  107.     fenster.sort        = "TRUE"
  108.  
  109.     liste:
  110.     dummy=viewlist(adr,fenster,destvar)
  111.     if destvar.gadget=2 then call neu
  112.     if destvar.0=0 then exit
  113.     if destvar.0>1 then do i=2 to destvar.0
  114.         destvar.1=destvar.1||lf||destvar.i
  115.     end
  116.     if destvar.1="" then call liste
  117.     if destvar.gadget=0 then exit
  118.     writeclipboard(0,destvar.1)
  119.     call liste
  120. end
  121.  
  122. check = rtezrequest(noadrreqI||filename||noadrreqII,noadrbutton,noadrhead,'rt_reqpos=reqpos_centerwin')
  123. if check=1 then call neu
  124. exit
  125.  
  126. /* ----------------------------- Unterprogramme ------------------------- */
  127.  
  128. grab:
  129. len=length(zeile)
  130. len=len-idx
  131. fidx.1=index(zeile," ",idx)
  132. if fidx.1=0 then fidx.1=1000
  133. fidx.2=index(zeile,'"',idx)
  134. if fidx.2=0 then fidx.2=1000
  135. fidx.3=index(zeile,")",idx)
  136. if fidx.3=0 then fidx.3=1000
  137. fidx.4=index(zeile,">",idx)
  138. if fidx.4=0 then fidx.4=1000
  139. fidx.5=index(zeile,"<",idx)
  140. if fidx.5=0 then fidx.5=1000
  141.  
  142. fidx=min(fidx.1,fidx.2,fidx.3,fidx.4,fidx.5)
  143. if fidx=1000 then fidx=0
  144. if fidx>0 then wort=substr(zeile,idx,fidx-idx)
  145. else wort=right(zeile,len+1)
  146. if length(wort)<8 then return
  147.  
  148. call neueadr
  149. return
  150.  
  151. /*-----------------------------------------------------------*/
  152.  
  153. email:
  154. idx=index(zeile,"@")
  155. if idx=1 then return
  156. aidx.1=lastpos(" ",zeile,idx)
  157. aidx.2=lastpos('"',zeile,idx)
  158. aidx.3=lastpos("(",zeile,idx)
  159. aidx.4=lastpos("<",zeile,idx)
  160. aidx.5=lastpos(">",zeile,idx)
  161. aidx.6=lastpos(":",zeile,idx)
  162.  
  163. aidx=max(aidx.1,aidx.2,aidx.3,aidx.4,aidx.5,aidx.6)+1
  164. if aidx=idx then return
  165. fidx.1=index(zeile," ",idx)
  166. if fidx.1=0 then fidx.1=1000
  167. fidx.2=index(zeile,'"',idx)
  168. if fidx.2=0 then fidx.2=1000
  169. fidx.3=index(zeile,")",idx)
  170. if fidx.3=0 then fidx.3=1000
  171. fidx.4=index(zeile,">",idx)
  172. if fidx.4=0 then fidx.4=1000
  173. fidx.5=index(zeile,"<",idx)
  174. if fidx.5=0 then fidx.5=1000
  175. fidx.6=index(zeile,"{",idx)
  176. if fidx.6=0 then fidx.6=1000
  177.  
  178. fidx=min(fidx.1,fidx.2,fidx.3,fidx.4,fidx.5,fidx.6)
  179. if fidx=1000 then fidx=0
  180. if fidx=0 then fidx=length(zeile)+1
  181. if fidx<5 then return
  182. wort=substr(zeile,aidx,fidx-aidx)
  183. len=length(wort)
  184. if len<6 then return
  185. if index(wort,"@")<3 then return
  186. if index(wort,"@")>len-3 then return
  187.  
  188. call neueadr
  189. return
  190. /*-----------------------------------------------------------*/
  191.  
  192. neu:
  193. if z>0 then dummy=stemremove(adr,1,z)
  194. filename=""
  195. call neuesfile
  196.  
  197. /*-----------------------------------------------------------*/
  198.  
  199. neueadr:
  200. if lsearch(wort,adr)=(-1) then do
  201.     z=z+1
  202.     adr.0=z
  203.     adr.z=wort
  204. end
  205. return
  206.  
  207. /*-----------------------------------------------------------*/
  208.  
  209. nolib:
  210. open("error","CON:160/50/320/100/Missing Library")
  211. writeln("error","Please install the"||lf)
  212. writeln("error",'"'||lib||'"'||lf)
  213. writeln("error","to your LIBS: Directory"||lf)
  214. writeln("error","(You find them in Aminet)")
  215. zeit=time("S")
  216. do until time("S")=zeit+5
  217. end
  218. exit
  219.